Этапы построения ЭС:
•	идентификация ПО (цели и характеристики ЭС, ресурсы, участники разработки)
•	концептуализация  (основные понятия и связи между ними, основные задачи)
•	формализация (запись на выбранном языке представления знаний, формирование БЗ)
•	реализация
•	проверка правил, тестирование

Стадии разработки ЭС:
прототип:	демонстрационный
		исследовательский
		действующий
система:	промышленная
		коммерческая
(прототип  система - происходит отчуждение ЭС от разработчика)

Создавать ли ЭС?
ДА - ЕСЛИ: Разработка возможна & Разработка оправдана & Разработка разумна

Разработка возможна:
задача не слишком трудна
задача вполне понятна

&

	задача требует только интеллектуальных навыков
существуют хорошие эксперты
эксперты единодушны
эксперты могут описать свои знания
Разработка оправдана:
полученное решение высокорентабельно
человеческий опыт утрачивается
V	экспертов мало
опыт нужен во многих местах
опыт нужен в неблагоприятной среде (автономная ЭС)
Разработка разумна:
задача требует оперирования символами
задача требует эвристических решений
&	задача не слишком проста
задача имеет практический интерес
задача решаема (ЭС реализуема)

Извлечение экспертных знаний и формирование БЗ:
Эмпирические правила:
"Чем более компетентен эксперт, тем менее способен он описать те знания, которые использует при решении задач".
"Не будьте своим собственным экспертом".
"Не принимайте на веру все, что говорят эксперты".
Методы извлечения экспертных знаний:

Наблюдение на рабочем месте
	Э решает реальные задачи, ИЗ - пассивно наблюдает
	цель: ИЗ получает представление о характерных задачах.  

Обсуждение задач
ИЗ обсуждает с Э отобранные им (ИЗ) характерные задачи
цель: ИЗ узнает, как организованы знания Э (понятия, гипотезы), как Э работает с неполной, неточной, противоречивой информацией, какие процедуры необходимы для решения задач.

Описание задач
	ИЗ просит Э описать типичные задачи для каждого класса задач
	цель: ИЗ узнает, как связаны между собой задачи одного класса, классы задач.

Анализ задач
	ИЗ предлагает Э задачи и расспрашивает о ходе решения
	цель: ИЗ пытается найти и сформулировать стратегии решения задач.

Доводка системы
Э предлагает ИЗ/прототипу_ЭС характерные задачи
	цель: ИЗ проверяет сформированную совокупность знаний (БЗ).

Оценивание системы
Э анализирует и оценивает правила, стратегии, систему понятий ПО
цель: Э оценивает точность работы ИЗ и правильность сформированной БЗ.

Проверка системы
	ИЗ предлагает независимым экспертам протоколы решения задач Э и прототипом_ЭС
	цель: объективная оценка результатов работы ИЗ и Э (и сформированной БЗ).

Пример: Оценка размера страховых выплат

Ситуация. Беседа Инженера_знаний с Экспертом.

Некоторые правила:

Если	повреждение истца действительно требует, чтобы он носил очки
  и	и истец до повреждения не носил очков
увеличить фактор неудобства на 2500$

Если	истец действительно имеет вероятность заболеть глаукомой
  и	эта вероятность была вызвана повреждением
  и	величина этой вероятности равна 10%
увеличить фактор осложнений в будущем на 30000$

Реализация модельной экспертной системы на языке Плэнер
	Модельная экспертная система решает задачу распознавания вида животного (тигр) на основе группы взаимосвязанных признаков:

млекопитающее

хищник

рыжевато-кор

темные-полосы

питается-мясом

острокон-зубы

когти

глаза-спереди

ТИГР

Система работает с базой данных, в которой хранятся утверждения следующих типов:
(<имя> = <вид>) → ОБСН: <обоснование>  ​  ( )
(<имя> - <класс>) → ОБСН: <обоснование>  ​  ( )
(<имя> имеет <свойство>) → ОТВ: ДА  ​  НЕТ
(<имя> питается <пища>)
Для определения вида животного используется аппарат теорем. Часть информации, необходимой для решения задачи представлена в виде утвереждений базы данных, часть запрашивается у пользователя. В списках свойств утверждений представлены ответы пользователя и обоснование решения системы.
[define  main  (lambda  ( )
	[prog (ОТВ  ИМЯ  ВИД  ОБ)
     [while  T
		[print  ‘Работает эксперт по распознаванию животных‘]
		[print  ‘У Вас есть задача на распознавание?‘]
		[pset  ОТВ [yes-no]]
		[cond ([eq  .ОТВ  НЕТ]  [exit  main  main])]
		[print  ‘Введите имя распознаваемого объекта‘]
		[pset  ИМЯ  [read]]
		[if  ([perm  [goal  (.ИМЯ  =  *ВИД)]]
		      [pset  ОБ  [geta  (.ИМЯ   =  *ВИД)  ОБСН]]
		      [output  .ИМЯ  .ВИД  .ОБ] )
		     (T [mprint  Кем является .ИМЯ я не знаю ])]
		[cleardb]  ] ])]

[define  Тигр?  (conseq  (ИМЯ  ОБ  ОБ1  ОБ2)
		(*ИМЯ  =  ТИГР)
[goal (.ИМЯ  - млекопитающее)]
[goal (.ИМЯ  - хищник)]
[goal (.ИМЯ  имеет рыжевато-кор) (test  ОТВ  ДА)]
[goal (.ИМЯ  имеет темные-полосы) (test  ОТВ  ДА)]
	[pset  ОБ1 [geta  (.ИМЯ  - млекопитающее) ОБСН]]
	[pset  ОБ2 [geta  (.ИМЯ  - хищник) ОБСН]]
	[pset  ОБ ( ( (.ИМЯ  = ТИГР) так как (.ИМЯ – млекопитающее)
    (.ИМЯ – хищник)								    	       (.ИМЯ имеет рыжевато-коричневую окраску)
				    	       (.ИМЯ имеет темные полосы)) !.ОБ1  !.ОБ2)]
	[passert  (.ИМЯ  = ТИГР)  (with  ОБСН  .ОБ)]   )]

[define  Окраска?  (conseq  (ИМЯ  ОТВ)
	(*ИМЯ имеет рыжевато-кор)
[if  ([search1 (.ИМЯ имеет рыжевато-кор)  (test  ОТВ  *ОТВ)])
     (T  [mprint  .ИМЯ имеет рыжевато-коричневую окраску?]
           [pset  ОТВ  [yes-no]]
           [passert  (.ИМЯ имеет рыжевато-кор)  (with  ОТВ  .ОТВ)])]
[cond ([eq  .ОТВ  НЕТ]  [fail])] )]

[define  Полосы?  (conseq  (ИМЯ  ОТВ)
	(*ИМЯ имеет темные-полосы)
[if  ([search1 (.ИМЯ имеет темные-полосы)  (test  ОТВ  *ОТВ)])
     (T  [mprint  .ИМЯ имеет темные полосы?]
           [pset    [yes-no]]
           [passert  (.ИМЯ имеет темные-полосы )  (with  ОТВ  .ОТВ)])]
[cond ([eq  .ОТВ  НЕТ]  [fail])] )]

[define  Хищник1?  (conseq  (ИМЯ  ОБ)
		(*ИМЯ  -  хищник)
[goal (.ИМЯ  питается  мясом)]
	[pset  ОБ  ( ( (.ИМЯ - хищник) так как (питается мясом)))]
	[passert  (.ИМЯ - хищник)  (with  ОБСН  .ОБ)]   )]

[define  Хищник2?  (conseq  (ИМЯ  ОБ)
	(*ИМЯ  -  хищник)
[goal (.ИМЯ  имеет  острокон-зубы)]
[goal (.ИМЯ  имеет  когти)]
[goal (.ИМЯ  имеет  глаза-спереди)]
	[pset  ОБ  ( ( (.ИМЯ - хищник) так как   (.ИМЯ имеет  остроконечные зубы)								            (.ИМЯ имеет когти)
			            (.ИМЯ имеет глаза спереди)))]
	[passert  (.ИМЯ - хищник)  (with  ОБСН  .ОБ)]   )]
[define  yes-no  (lambda  ( ) [read])]
[define  output  (lambda  (x y z ) [prog ( ) [print .x] [print.y] [print .z]])]

[assert (Муся  питается  мясом)]
[assert (Муся - млекопитающее)]
[assert (Муся  имеет темные-полосы) (with ОТВ ДА)]
[assert (Муся  имеет рыжевато-кор) (with ОТВ ДА)]

	Разбор вариантов решения задачи распознавания (выполнения программы) при различных данных, внесенных в базу знаний ЭС и сообщаемых в диалоге пользователем.

	Анализ трудоемкости развития программы для повышения ее функциональных возможностей (распознавания новых животных).